<?php
namespace app\api\controller;

use app\common\controller\ApiController;
use think\App;
use \app\admin\traits\Curd;
use dh2y\qrcode\QRcode;
use think\facade\Db;

class Shop extends ApiController
{
    protected $noNeedLogin = [
        "CreateCode", 
        "get_qrcode",
        "scanning_qrcode"
        
    ];
    protected $mustLogin = [];
    protected $counter = 0;

    use \app\admin\traits\Curd;
    public function __construct(App $app)
    {
        parent::__construct($app);
    }
    //随机获取二维码
    public function get_qrcode()
    {
        $param = $this->request->param();
        if (empty($param['userid'])) {
            $this->error('用户标识不能为空');
        }
        $flag = Db::name("qrcode_user")->where("userid",$param["userid"])->find();
        if(!empty($flag)){
            $this->success('获取成功', $flag);
        }else{
            $list = Db::name("qrcode")->where("status",0)->order("id desc")->select()->toArray();
            $res = $this->getRandomItem($list,1);
            $this->success('获取成功', $res);
        }
    }
    
    //H5页面生成二维码
    public function CreateCode(QRcode $qrcode)
    {
        // 生成二维码的内容
        $data = 'http://www.baidu.com';
        //生成二维码
        $qrcode->png($data);
        $pathurl = $qrcode->entry();
        $this->success('获取成功', $pathurl);
    }

    function getRandomItem($array) {
        // 如果数组为空或不是二维数组，返回false
        if (!is_array($array) || empty($array) || !is_array($array[0])) {
            return false;
        }
        // 打乱数组顺序
        shuffle($array);
        // 从打乱后的数组中随机抽取一条数据
        return array_pop($array);
    }

    //用户扫描二维码
    public function scanning_qrcode(){
        $param = $this->request->param();
        if (empty($param['userid'])) {
            $this->error('用户标识不能为空');
        }
        if (empty($param['qrcode_id'])) {
            $this->error('二维码id不能为空');
        }
        //判断是否上限
        $qrcode = Db::name("qrcode")->where("id",$param["qrcode_id"])->find();
        $scan_code_limit = Db::name("qrcode_user")->where("qrcode_id",$param["qrcode_id"])->count();
        if(!empty($qrcode)){
            if($scan_code_limit >= $qrcode["scan_code_limit"]){
                Db::name("qrcode")->where("id",$param["qrcode_id"])->update(["status"=>1]);
                $this->error('此二维码扫描已达上限');
            }
            $list = Db::name("qrcode_user")->where("userid",$param["userid"])->where("qrcode_id",$param["qrcode_id"])->find();
            if(empty($list)){
                //二维码未上限加入记录
                $data = [
                    'userid'=>$param["userid"],
                    'qrcode_id'=>$qrcode["id"],
                    'qrcode_remark_name'=>$qrcode["qrcode_remark_name"],
                    'scan_code_limit'=>$qrcode["scan_code_limit"],
                    'qrcode_url'=>$qrcode["qrcode_url"],
                    'create_time'=>time(),
                ];
                Db::name("qrcode_user")->insert($data);
                //增加当日和累计的次数
                Db::name("qrcode")->where("id",$qrcode["id"])->inc("sameday_num",1)->update();
                Db::name("qrcode")->where("id",$qrcode["id"])->inc("cumulative_num",1)->update();
            }
            $this->success('可以扫码');
        }else{
            $this->success('参数错误');
        }
    }
 

 





















     

     

    
 
   
}
